package com.ias.common.result;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 返回状态码枚举
 * 
 * @author IAS Team
 * @since 1.0.0
 */
@Getter
@AllArgsConstructor
public enum ResultCode {
    
    /**
     * 成功
     */
    SUCCESS(200, "操作成功"),
    
    /**
     * 失败
     */
    ERROR(500, "操作失败"),
    
    /**
     * 参数错误
     */
    PARAM_ERROR(400, "参数错误"),
    
    /**
     * 未授权
     */
    UNAUTHORIZED(401, "未授权"),
    
    /**
     * 禁止访问
     */
    FORBIDDEN(403, "禁止访问"),
    
    /**
     * 资源不存在
     */
    NOT_FOUND(404, "资源不存在"),
    
    /**
     * 请求方法不支持
     */
    METHOD_NOT_ALLOWED(405, "请求方法不支持"),
    
    /**
     * 请求超时
     */
    REQUEST_TIMEOUT(408, "请求超时"),
    
    /**
     * 系统异常
     */
    SYSTEM_ERROR(500, "系统异常"),
    
    /**
     * 业务异常
     */
    BUSINESS_ERROR(600, "业务异常"),
    
    /**
     * 用户名或密码错误
     */
    LOGIN_ERROR(1001, "用户名或密码错误"),
    
    /**
     * 用户已被禁用
     */
    USER_DISABLED(1002, "用户已被禁用"),
    
    /**
     * 用户不存在
     */
    USER_NOT_EXISTS(1003, "用户不存在"),
    
    /**
     * 密码错误
     */
    PASSWORD_ERROR(1004, "密码错误"),
    
    /**
     * 账号已锁定
     */
    ACCOUNT_LOCKED(1005, "账号已锁定"),
    
    /**
     * 验证码错误
     */
    CAPTCHA_ERROR(1006, "验证码错误"),
    
    /**
     * 令牌失效
     */
    TOKEN_INVALID(1007, "令牌失效"),

    /**
     * 权限不足
     */
    PERMISSION_DENIED(1008, "权限不足"),

    RESOURCE_NOT_FOUND(1009, "资源不存在"),
    FORBIDDEN_OPERATION(1010,"演示环境禁止新增、修改和删除重要数据，请本地部署后测试"),
    REPEAT_SUBMIT_ERROR(1011, "重复提交"), FLOW_LIMITING(10012, "系统限流"), DEGRADATION(10013, "系统降级");



    /**
     * 状态码
     */
    private final Integer code;
    
    /**
     * 消息
     */
    private final String message;
} 